<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- <script>

        // var obj = Object.create(原型);

        var obj = {name: 'sunny', age: 23};
        var obj1 = Object.create(obj);

        var obj2 = Object.create(null);//创建一个没有原型的对象
        obj2.age = 123;
        // No properties  没有属性

        obj2.__proto__ = {name: 'cherry'}
        console.log(obj2.name);  //undefined
        //人为的添加__proto__是不管用的，颜色都没有变浅
        // 可以修改系统给的原型，但系统如果没有，添加的__proto__并不是原型


        //不能直接调用123.toString()
        var num = 123;
        console.log(num.toString());
        // 相当于 new Number(num).toString()
        // Number.prototype.toString = function() {}
        // Number.prototype.__proto__ = Object.prototype
        // number包装对象调用的是Number.prototype的方法
        // 自身写了一个和原型上相同名字的方法，叫做重写


        var bol = true;
        console.log(bol.toString());
        var str = 'abc';
        console.log(str.toString());

        var obj11 = {};
        console.log(obj11.toString());//返回'[object Object]'



        /*
            存在toString的原型：
            Object.prototype.toString
            Number.prototype.toString
            Array.prototype.toString
            Boolean.prototype.toString
            String.prototype.toString
        */
    </script> -->

    <script>

        var obj = {};
        var num = 123;
        var und = undefined
        var func = function a() {}
        document.write(obj);
        document.write(num);
        document.write(und);
        document.write(func); //函数也会调用toString，和控制台差不多，函数最终也继承自Object.prototype

        var obj1 = Object.create(null);

        obj1.toString = function() {
            return 123;
        }
        document.write(obj1);
        // document.write会默认调用toString方法


    </script>
</body>
</html>